package com.regan.erp.service;

import cn.hutool.core.lang.Dict;
import cn.hutool.core.util.ObjectUtil;
import com.jfinal.plugin.activerecord.Db;
import com.regan.erp.model.Menu;
import com.regan.erp.model.MenuNode;
import com.regan.erp.util.FunctionUtils;

import java.util.List;
import java.util.stream.Collectors;

/**
 * 菜单管理 service
 *
 * @author zhangby
 * @date 2018/10/11 下午3:56
 */
public class MenuService {

    /**
     * 获取菜单列表，菜单数据返回 父子集
     *
     * @param paramDict
     * @return
     * @author zhangby
     * @date 2018/10/11 下午3:58
     */
    public List<MenuNode> getMenuListData(Dict paramDict) {
        List<MenuNode> menus = FunctionUtils.convers(Menu.dao.find(Db.getSqlPara("menu.getMenuListData", paramDict)), MenuNode.convert);
        //条件查询无需，设置父子级
        if (paramDict.isEmpty()) {
            //递归循环子集菜单全部数据
            menus.forEach(menu -> {
                if (!ObjectUtil.equal(Menu.MAIN_MEUN_ID_0, menu.getParent_id())) {
                    if (menus.stream().filter(m -> ObjectUtil.equal(m.getId(), menu.getParent_id())).count() > 0) {
                        MenuNode menuNode = menus.stream().filter(m -> ObjectUtil.equal(m.getId(), menu.getParent_id())).findFirst().get();
                        menuNode.getChildren().add(menu);
                    }
                }
            });
            return menus.stream().filter(m -> ObjectUtil.equal(Menu.MAIN_MEUN_ID_0, m.getParent_id())).collect(Collectors.toList());
        } else {
            return menus;
        }
    }
}
